/**
 * Fichier EnsLibreTableModel.java : Définition de classe
 * fr.unice.gnpt.gui.util.EnsLibreTableModel : Affichage des services libres
 * 
 * Auteurs : Groupe GNPT : Gastinel, Nicolas, Pellegrino, Trovato
 */
package fr.unice.gnpt.gui.util;

import java.util.Collection;

import fr.unice.gnpt.core.Enseignant;
import fr.unice.gnpt.gui.utilisateur.Utilisateur;

/**
 * Classe définissant un TableModel pour afficher les enseignants et leurs
 * heures équivalentes TD correspondantes.
 * 
 * @author gnpt
 * @version 0.0.1
 */
public class HeureEnseignantTableModel extends
		ServiceTableModel<PseudoEnseignant> {

	private final static long serialVersionUID = 1L;

	private Utilisateur frameUtilisateur;

	/**
	 * Constructeur par défaut.
	 * 
	 * @param frame
	 *            l'objet Utilisateur qui gère la JTable associé à ce modèle.
	 */
	public HeureEnseignantTableModel(Utilisateur frame) {
		super();
		this.nomColonnes = new String[] { "Nom", "Nombre Heure ETD",
				"Heure Suplémentaire", "Nombre d'heures dûes" };
		this.classColonnes = new Class<?>[] { String.class, Integer.class,
				Integer.class, Integer.class };
		this.frameUtilisateur = frame;
		this.autoRecuperationDonnees();
	}

	/**
	 * Méthode de remplissage automatique des données.
	 */
	private void autoRecuperationDonnees() {
		Collection<Enseignant> coll = this.frameUtilisateur
				.getCollEnseignants();
		for (Enseignant e : coll) {
			this.ajouterLigne(new PseudoEnseignant(e));
		}
	}

	/**
	 * Méthode d'actualisation des données.
	 */
	public void actualiserDonnees() {
		this.clearDonnees();
		this.autoRecuperationDonnees();
	}

	/**
	 * @see javax.swing.table.TableModel#getValueAt(int, int)
	 */
	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		PseudoEnseignant pe = this.getDonneeAt(rowIndex);
		Object ret = null;
		if (pe != null) {
			switch (columnIndex) {
			case 0:
				ret = pe.getEnseignant().toString();
				break;
			case 1:
				ret = pe.getNbHeure();
				break;
			case 2:
				ret = pe.getNbHeuresSup();
				break;
			case 3:
				ret = pe.getEnseignant().getNombreHeuresDues();
				break;
			}
		}
		return ret;
	}
}
